home *** CD-ROM | disk | FTP | other *** search
/ PCNet 1998 May / PCnet Mayıs 1998.iso / Multimed / Program / A_Trial.exe / data.z / JObMap.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-04  |  3.0 KB  |  264 lines

  1. public class JObMap {
  2.    private JMapNode m_Head;
  3.    private JMapNode m_Tail;
  4.    private int m_nCount;
  5.  
  6.    public Position GetHeadPosition() {
  7.       return new Position(this.m_Head);
  8.    }
  9.  
  10.    public Object GetAt(Position var1) {
  11.       return var1.element == null ? null : ((JMapNode)var1.element).data;
  12.    }
  13.  
  14.    public Object GetTail() {
  15.       return this.m_Tail == null ? null : this.m_Tail.data;
  16.    }
  17.  
  18.    public void AddTail(JMxKey var1, Object var2) {
  19.       JMapNode var3 = new JMapNode(var1, var2);
  20.       if (this.m_Tail == null) {
  21.          var3.next = var3.prev = null;
  22.          this.m_Head = this.m_Tail = var3;
  23.       } else {
  24.          var3.prev = this.m_Tail;
  25.          var3.next = null;
  26.          this.m_Tail.next = var3;
  27.          this.m_Tail = var3;
  28.       }
  29.  
  30.       ++this.m_nCount;
  31.    }
  32.  
  33.    public Object RemoveAt(Position var1) {
  34.       JMapNode var2 = (JMapNode)var1.element;
  35.       var1.element = null;
  36.       if (var2 == null) {
  37.          return null;
  38.       } else {
  39.          Object var3 = var2.data;
  40.          this.RemoveNode(var2);
  41.          return var3;
  42.       }
  43.    }
  44.  
  45.    public Object GetHead() {
  46.       return this.m_Head == null ? null : this.m_Head.data;
  47.    }
  48.  
  49.    public void AddHead(JMxKey var1, Object var2) {
  50.       JMapNode var3 = new JMapNode(var1, var2);
  51.       if (this.m_Head == null) {
  52.          var3.next = var3.prev = null;
  53.          this.m_Head = this.m_Tail = var3;
  54.       } else {
  55.          var3.prev = null;
  56.          var3.next = this.m_Head;
  57.          this.m_Head.prev = var3;
  58.          this.m_Head = var3;
  59.       }
  60.  
  61.       ++this.m_nCount;
  62.    }
  63.  
  64.    public String toString() {
  65.       String var1 = "List contains " + this.m_nCount + " items: \n";
  66.  
  67.       for(JMapNode var2 = this.m_Head; var2 != null; var2 = var2.next) {
  68.          var1 = var1 + var2.toString();
  69.       }
  70.  
  71.       return var1;
  72.    }
  73.  
  74.    public Object Remove(JMxKey var1) {
  75.       Position var2 = this.Find(var1);
  76.       return var2.element == null ? null : this.RemoveAt(var2);
  77.    }
  78.  
  79.    public Position FindNext(JMxKey var1, Position var2) {
  80.       JMapNode var3 = null;
  81.       if (var2 != null) {
  82.          var3 = (JMapNode)var2.element;
  83.       }
  84.  
  85.       if (var3 != null) {
  86.          var3 = var3.next;
  87.       }
  88.  
  89.       if (var3 == null) {
  90.          var3 = this.m_Head;
  91.       }
  92.  
  93.       while(var3 != null && var1.Compare(var3.key) != 0) {
  94.          var3 = var3.next;
  95.       }
  96.  
  97.       return var3 == null ? null : new Position(var3);
  98.    }
  99.  
  100.    public Position FindNext(Object var1, Position var2) {
  101.       JMapNode var3 = null;
  102.       if (var2 != null) {
  103.          var3 = (JMapNode)var2.element;
  104.       }
  105.  
  106.       if (var3 == null) {
  107.          var3 = this.m_Head;
  108.       }
  109.  
  110.       while(var3 != null && !var1.equals(var3.data)) {
  111.          var3 = var3.next;
  112.       }
  113.  
  114.       return new Position(var3);
  115.    }
  116.  
  117.    public Position GetTailPosition() {
  118.       return new Position(this.m_Tail);
  119.    }
  120.  
  121.    public Object FindData(JMxKey var1) {
  122.       JMapNode var2;
  123.       for(var2 = this.m_Head; var2 != null && var1.Compare(var2.key) != 0; var2 = var2.next) {
  124.       }
  125.  
  126.       return var2 == null ? null : var2.data;
  127.    }
  128.  
  129.    public Object RemoveHead() {
  130.       if (this.m_Head == null) {
  131.          return null;
  132.       } else {
  133.          Object var1 = this.m_Head.data;
  134.          this.m_Head = this.m_Head.next;
  135.          if (this.m_Head != null) {
  136.             this.m_Head.prev = null;
  137.          } else {
  138.             this.m_Tail = null;
  139.          }
  140.  
  141.          this.m_nCount += -1;
  142.          return var1;
  143.       }
  144.    }
  145.  
  146.    public Position FindPrev(JMxKey var1, Position var2) {
  147.       JMapNode var3 = null;
  148.       if (var2 != null) {
  149.          var3 = (JMapNode)var2.element;
  150.       }
  151.  
  152.       if (var3 != null) {
  153.          var3 = var3.prev;
  154.       }
  155.  
  156.       if (var3 == null) {
  157.          var3 = this.m_Tail;
  158.       }
  159.  
  160.       while(var3 != null && var1.Compare(var3.key) != 0) {
  161.          var3 = var3.prev;
  162.       }
  163.  
  164.       return var3 == null ? null : new Position(var3);
  165.    }
  166.  
  167.    public void RemoveAll() {
  168.       while(this.m_nCount > 0) {
  169.          this.RemoveHead();
  170.       }
  171.  
  172.       this.m_nCount = 0;
  173.       this.m_Head = this.m_Tail = null;
  174.    }
  175.  
  176.    public void RemoveAll(JMxKey var1) {
  177.       JMapNode var2 = this.m_Head;
  178.  
  179.       while(var2 != null) {
  180.          if (var1.Compare(var2.key) == 0) {
  181.             JMapNode var3 = var2;
  182.             var2 = var2.next;
  183.             this.RemoveNode(var3);
  184.          } else {
  185.             var2 = var2.next;
  186.          }
  187.       }
  188.  
  189.    }
  190.  
  191.    public boolean IsEmpty() {
  192.       return this.m_nCount == 0;
  193.    }
  194.  
  195.    public JMxKey GetNextKey(Position var1) {
  196.       if (var1.element == null) {
  197.          return null;
  198.       } else {
  199.          JMxKey var2 = ((JMapNode)var1.element).key;
  200.          var1.element = ((JMapNode)var1.element).next;
  201.          return var2;
  202.       }
  203.    }
  204.  
  205.    public Position Find(JMxKey var1) {
  206.       JMapNode var2;
  207.       for(var2 = this.m_Head; var2 != null && var1.Compare(var2.key) != 0; var2 = var2.next) {
  208.       }
  209.  
  210.       return var2 == null ? null : new Position(var2);
  211.    }
  212.  
  213.    public Position ReverseFind(JMxKey var1) {
  214.       JMapNode var2;
  215.       for(var2 = this.m_Tail; var2 != null && var1.Compare(var2.key) != 0; var2 = var2.prev) {
  216.       }
  217.  
  218.       return var2 == null ? null : new Position(var2);
  219.    }
  220.  
  221.    protected Object RemoveNode(JMapNode var1) {
  222.       Object var2 = var1.data;
  223.       this.m_nCount += -1;
  224.       if (this.m_nCount == 0) {
  225.          this.m_Head = this.m_Tail = null;
  226.       } else if (var1 == this.m_Tail) {
  227.          this.m_Tail = var1.prev;
  228.          var1.prev.next = null;
  229.          var1.prev = null;
  230.       } else if (var1 == this.m_Head) {
  231.          this.m_Head = var1.next;
  232.          var1.next.prev = null;
  233.          var1.next = null;
  234.       } else {
  235.          var1.prev.next = var1.next;
  236.          var1.next.prev = var1.prev;
  237.          var1.next = null;
  238.          var1.prev = null;
  239.       }
  240.  
  241.       return var2;
  242.    }
  243.  
  244.    public Object GetPrev(Position var1) {
  245.       if (var1.element == null) {
  246.          return null;
  247.       } else {
  248.          Object var2 = ((JMapNode)var1.element).data;
  249.          var1.element = ((JMapNode)var1.element).prev;
  250.          return var2;
  251.       }
  252.    }
  253.  
  254.    public Object GetNext(Position var1) {
  255.       if (var1.element == null) {
  256.          return null;
  257.       } else {
  258.          Object var2 = ((JMapNode)var1.element).data;
  259.          var1.element = ((JMapNode)var1.element).next;
  260.          return var2;
  261.       }
  262.    }
  263. }
  264.